﻿#pragma once

#include <iostream>
#include <opencv2/opencv.hpp>
#include <QDialog>
class ImageTask {
public:
	virtual ~ImageTask() = default;
    /**
         * @brief 执行任务，修改输入的图像
         * @param image 输入和输出的图像
         */
    virtual void execute(cv::Mat& image) = 0;

    /**
     * @brief 获取任务名称，用于界面显示
     * @return 任务名称
     */
    virtual std::string getName() const = 0;

    /**
     * @brief 获取任务的配置界面
     * @return 配置界面对话框的智能指针
     */
    virtual std::unique_ptr<QDialog> getConfigUI() = 0;
};